An interrupt is a signal sent from hardware to a processor when the hardware has detected a condition that requires attention. An interrupt can take priority over other tasks being executed by the processor, such as tasks being executed by the processor as directed by an operating system or by a computer program running on the operating system. One type of interrupt is a system management interrupt (SMI), which is generated by hardware and sent to the processor, which then sends the SMI to firmware for immediate processing. For example, hardware such as a volatile memory controller may send an SMI to the processor when the controller detects a correctable or uncorrectable memory error. The firmware is a computer program stored on a non-volatile memory, and which is responsible for performing low-level tasks to ensure the proper running of a computing system. An example of firmware is a basic input/output system (BIOS), which is also responsible for the booting of the computing system.